When designing a software product, software developers typically determine the types of data structures that the software will utilize. These data structures may correspond to screens of user data that may be available in the software product. For example, an e-mail software product may include data structures that correspond to contacts, calendars, tasks, and so forth. The data structures for the contacts may correspond to certain contact information that the software developers have determined are important to have in the product and may not include other information that is determined to not be important.
When the software is shipped, the data types the software can work with may be hard-coded in the software and not changeable. To make the software work with new data types, a new version of the software that is designed to work with the new data types may be released. This provides very little flexibility for companies to change the data types that a software product may utilize.